home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / JPopupMenu$JPanelPopup.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  3.5 KB  |  157 lines

  1. package javax.swing;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Graphics;
  7. import java.awt.Point;
  8. import java.awt.Rectangle;
  9. import java.awt.Window;
  10. import java.io.Serializable;
  11.  
  12. class JPopupMenu$JPanelPopup extends JPanel implements JPopupMenu.Popup, Serializable {
  13.    // $FF: synthetic field
  14.    private final JPopupMenu this$0;
  15.    int desiredLocationX;
  16.    int desiredLocationY;
  17.  
  18.    public JPopupMenu$JPanelPopup(JPopupMenu var1) {
  19.       this.this$0 = var1;
  20.       ((Container)this).setLayout(new BorderLayout());
  21.       ((JComponent)this).setDoubleBuffered(true);
  22.       ((JComponent)this).setOpaque(true);
  23.    }
  24.  
  25.    public void addComponent(Component var1, Object var2) {
  26.       ((Container)this).add(var1, var2);
  27.    }
  28.  
  29.    Point convertParentLocationToScreen(Container var1, int var2, int var3) {
  30.       Window var4 = null;
  31.  
  32.       for(Object var6 = this; var6 != null; var6 = ((Component)var6).getParent()) {
  33.          if (var6 instanceof Window) {
  34.             var4 = (Window)var6;
  35.             break;
  36.          }
  37.       }
  38.  
  39.       if (var4 != null) {
  40.          Rectangle var5 = ((Component)var4).getBounds();
  41.          Point var7 = new Point(var2, var3);
  42.          var7 = SwingUtilities.convertPoint(var1, var7, (Component)null);
  43.          var7.x += var5.x;
  44.          var7.y += var5.y;
  45.          return var7;
  46.       } else {
  47.          throw new Error("convertParentLocationToScreen: no window ancestor found");
  48.       }
  49.    }
  50.  
  51.    Point convertScreenLocationToParent(Container var1, int var2, int var3) {
  52.       Window var4 = null;
  53.  
  54.       for(Container var6 = var1; var6 != null; var6 = ((Component)var6).getParent()) {
  55.          if (var6 instanceof Window) {
  56.             var4 = (Window)var6;
  57.             break;
  58.          }
  59.       }
  60.  
  61.       if (var4 != null) {
  62.          Point var7 = new Point(var2, var3);
  63.          SwingUtilities.convertPointFromScreen(var7, var1);
  64.          return var7;
  65.       } else {
  66.          throw new Error("convertScreenLocationToParent: no window ancestor found");
  67.       }
  68.    }
  69.  
  70.    public Rectangle getBoundsOnScreen() {
  71.       Container var1 = ((Component)this).getParent();
  72.       if (var1 != null) {
  73.          Rectangle var2 = ((Component)this).getBounds();
  74.          Point var3 = this.convertParentLocationToScreen(var1, var2.x, var2.y);
  75.          var2.x = var3.x;
  76.          var2.y = var3.y;
  77.          return var2;
  78.       } else {
  79.          throw new Error("getBoundsOnScreen called on an invisible popup");
  80.       }
  81.    }
  82.  
  83.    public Component getComponent() {
  84.       return this;
  85.    }
  86.  
  87.    public void hide() {
  88.       Container var1 = ((Component)this).getParent();
  89.       Rectangle var2 = ((Component)this).getBounds();
  90.       if (var1 != null) {
  91.          var1.remove(this);
  92.       }
  93.  
  94.       ((Component)var1).repaint(var2.x, var2.y, var2.width, var2.height);
  95.    }
  96.  
  97.    public void pack() {
  98.       ((Component)this).setSize(((JComponent)this).getPreferredSize());
  99.    }
  100.  
  101.    public void removeComponent(Component var1) {
  102.       ((Container)this).remove(var1);
  103.    }
  104.  
  105.    public void setLocationOnScreen(int var1, int var2) {
  106.       Container var3 = ((Component)this).getParent();
  107.       if (var3 != null) {
  108.          Point var4 = this.convertScreenLocationToParent(var3, var1, var2);
  109.          ((Component)this).setLocation(var4.x, var4.y);
  110.       } else {
  111.          this.desiredLocationX = var1;
  112.          this.desiredLocationY = var2;
  113.       }
  114.  
  115.    }
  116.  
  117.    public void show(Component var1) {
  118.       Object var2 = null;
  119.       if (var1 != null) {
  120.          var2 = var1.getParent();
  121.       }
  122.  
  123.       Object var3 = null;
  124.  
  125.       for(Object var4 = var2; var4 != null; var4 = ((Component)var4).getParent()) {
  126.          if (var4 instanceof JRootPane) {
  127.             if (!(((Component)var4).getParent() instanceof JInternalFrame)) {
  128.                var2 = ((JRootPane)var4).getLayeredPane();
  129.  
  130.                for(var8 = ((Component)var2).getParent(); var8 != null && !(var8 instanceof Window); var8 = ((Component)var8).getParent()) {
  131.                }
  132.  
  133.                Window var6 = (Window)var8;
  134.                break;
  135.             }
  136.          } else if (var4 instanceof Window) {
  137.             var2 = var4;
  138.             Window var7 = (Window)var4;
  139.             break;
  140.          }
  141.       }
  142.  
  143.       Point var5 = this.convertScreenLocationToParent((Container)var2, this.desiredLocationX, this.desiredLocationY);
  144.       ((Component)this).setLocation(var5.x, var5.y);
  145.       if (var2 instanceof JLayeredPane) {
  146.          ((JLayeredPane)var2).add(this, JLayeredPane.POPUP_LAYER, 0);
  147.       } else {
  148.          ((Container)var2).add(this);
  149.       }
  150.  
  151.    }
  152.  
  153.    public void update(Graphics var1) {
  154.       ((JComponent)this).paint(var1);
  155.    }
  156. }
  157.